package Controllers;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import Model.Lyze;
import Model.Snowboard;
import Model.Uzivatel;
import Model.Zbozi;
import ModelJava.LyzeManager;
import ModelJava.SnowboardManager;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author papa
 */
public class ControllerKosik extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String viewUrl = "/index.jsp";
        request.setAttribute("showPage", "pridaniOK");
        HttpSession session = request.getSession();
        if (session == null) {
            viewUrl = "/error.jsp";
            System.out.println("Nastala chyba.");
        } else {
            if (session.isNew()) {
                System.out.println("Nova Session.");

            }
            if(session.getAttribute("uzivatel") == null){
                viewUrl = "/error.jsp";
            }else if(request.getParameter("typ") != null){
                //pokud je uzivatel prihlasen, prida zbozi do kosiku
                String id = request.getParameter("id");
                String typ = request.getParameter("typ");
                Zbozi noveZbozi = null;
                if(typ.equals("Snowboard")){
                    noveZbozi = new SnowboardManager().getObjectById(id);
                }else if(typ.equals("Lyze")){
                    noveZbozi = new LyzeManager().getObjectById(id);
                }
                ((Uzivatel)session.getAttribute("uzivatel")).getKosik().pridejZbozi(noveZbozi);
                System.err.println(((Uzivatel)session.getAttribute("uzivatel")).getKosik().getCelkovaCena());
            }else if(request.getParameter("delete") != null){
                //pozadavek na odstraneni polozky z kosiku
                int indexVKolekci = Integer.valueOf(request.getParameter("delete"));
                ((Uzivatel)session.getAttribute("uzivatel")).getKosik().smazZbozi(indexVKolekci);
                request.setAttribute("showPage", "kosikInfo");
            }else if(request.getParameter("objednat") != null){
                request.setAttribute("showPage", "objednavkaPoslana");
                ((Uzivatel)session.getAttribute("uzivatel")).getKosik().vynulujKosik();
            } else {
                //tady bude nahled do kosiku
                request.setAttribute("showPage", "kosikInfo");
            }
            RequestDispatcher rd = getServletContext().getRequestDispatcher(viewUrl);
            rd.forward(request, response);
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
